package com.example.community.dao;

import com.example.community.entity.DiscussPost;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 分页查询帖子
 */
@Mapper
@Repository
public interface DiscussPostMapper {

    //userId为0的时候, 在动态sql中不用它, 即查询所有的帖子,
    // 同时需要支持分页, offset为起始行号, limit为显示多少个
    List<DiscussPost> selectDiscussPosts(int userId, int offset, int limit);

    //查询有多少个贴子, 方便分页, 为0时为全部帖子
    //动态sql中, 仅有1个参数的情况下必须加@param取别名
    int selectDiscussPostRows(@Param("userId") int userId);

    int insertDiscussPost(DiscussPost discussPost);

    DiscussPost selectDiscussPostById(int id);

    // 更新帖子的评论数量, 帖子的评论数量实际上可以通过查找得到, 但是如果每次显示帖子都要查询一下所有帖子的数量
    // 例如首页上显示的20个帖子都需要查询数量, 开销很大。
    // 设置一个冗余的属性, 帖子数量
    int updateCommentCount(int id, int commentCount);
}
